/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.cardapiodigital.model;

import br.com.cardapiodigital.data.TipodeTelefonesData;
import br.com.cardapiodigital.entity.TipodeTelefones;
import br.com.cardapiodigital.exception.CardapioDigitalException;
import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import org.primefaces.event.SelectEvent;


/**
 *
 * @author egberto
 */
@ManagedBean
@ViewScoped
public class TipodeTelefonesModel extends AbstractModel implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    private TipodeTelefonesData tpoTelefoneData = null;
    private TipodeTelefones tpoTelefone = null;
    private List<TipodeTelefones> todosTiposTelefones = null;
    private TipodeTelefones telefoneSelecionado = null;
    
    public TipodeTelefonesModel(){ }
    
    public void salvar() {
        try {      
            getTpoTelefoneData().salvar(getTpoTelefone());            
            closeDialog();
            displayInfoMessageToUser("Created With Sucess");
            carregarTodosTiposTelefones();
            resetTipodeTelefones();
        } catch (Exception e) {
            keepDialogOpen();
            displayErrorMessageToUser("Ops, we could not create. Try again later");
            e.printStackTrace();
        }
    }
    
    public void atualizar(){
        try {
            getTpoTelefoneData().atualizar(getTelefoneSelecionado());
            closeDialog();
            displayInfoMessageToUser("Updated With Sucess");
            carregarTodosTiposTelefones();
            resetTipodeTelefones();
        } catch (Exception e) {
            keepDialogOpen();
            displayErrorMessageToUser("Ops, we could not create. Try again later");
            e.printStackTrace();
        }
    }
    
    public void excluir(){
        try {
            TipodeTelefones id = getTpoTelefoneData().obtem(getTelefoneSelecionado().getId());
            getTpoTelefoneData().excluir(id.getId());
            closeDialog();
            displayInfoMessageToUser("Deleted With Sucess");
            carregarTodosTiposTelefones();
            resetTipodeTelefones();
        } catch (Exception e) {
            keepDialogOpen();
            displayErrorMessageToUser("Ops, we could not create. Try again later");
            e.printStackTrace();
        }
    }

    public TipodeTelefonesData getTpoTelefoneData() {
        if(tpoTelefoneData == null){
            tpoTelefoneData = new TipodeTelefonesData();
        }            
        return tpoTelefoneData;
    }

    public TipodeTelefones getTpoTelefone() {
        if(tpoTelefone == null){
            tpoTelefone = new TipodeTelefones();
        }
        return tpoTelefone;
    }

    public void setTpoTelefone(TipodeTelefones tpoTelefone) {
        this.tpoTelefone = tpoTelefone;
    }

    public List<TipodeTelefones> carregarTodosTiposTelefones() throws CardapioDigitalException {
        return todosTiposTelefones = getTpoTelefoneData().buscarTodos();
    }

     public void resetTipodeTelefones() {
        tpoTelefone = new TipodeTelefones();
    }    

    public TipodeTelefones getTelefoneSelecionado() {
        if(telefoneSelecionado == null){
            telefoneSelecionado = new TipodeTelefones();
        }
        return telefoneSelecionado;
    }

    public void setTelefoneSelecionado(TipodeTelefones telefoneSelecionado) {
        this.telefoneSelecionado = telefoneSelecionado;
    }
    
    public void onRowSelect(SelectEvent slc) {
        setTelefoneSelecionado((TipodeTelefones) slc.getObject());
    }
}
